<?php
/**
 * Map24Geocoder51 class file
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */

/**
 * RequestHeader.CustomerKeyValuePair class
 */
if ( !class_exists('RequestHeaderCustomerKeyValuePair') )
{
require_once 'RequestHeader.CustomerKeyValuePair.php5';
}
/**
 * ResponseHeader class
 */
if ( !class_exists('ResponseHeader') )
{
require_once 'ResponseHeader.php5';
}
/**
 * Coordinate class
 */
if ( !class_exists('Coordinate') )
{
require_once 'Coordinate.php5';
}
/**
 * Property class
 */
if ( !class_exists('Property') )
{
require_once 'Property.php5';
}
/**
 * MapSearchAlternative.Crossing class
 */
if ( !class_exists('MapSearchAlternativeCrossing') )
{
require_once 'MapSearchAlternative.Crossing.php5';
}
/**
 * MapSearchAlternative.Housenumber class
 */
if ( !class_exists('MapSearchAlternativeHousenumber') )
{
require_once 'MapSearchAlternative.Housenumber.php5';
}
/**
 * MapSearchAlternative.Quality class
 */
if ( !class_exists('MapSearchAlternativeQuality') )
{
require_once 'MapSearchAlternative.Quality.php5';
}
/**
 * Bounds class
 */
if ( !class_exists('Bounds') )
{
require_once 'Bounds.php5';
}
/**
 * MapSearchAlternative class
 */
if ( !class_exists('MapSearchAlternative') )
{
require_once 'MapSearchAlternative.php5';
}
/**
 * MapSearchResponse class
 */
if ( !class_exists('MapSearchResponse') )
{
require_once 'MapSearchResponse.php5';
}
/**
 * RequestHeader class
 */
if ( !class_exists('RequestHeader') )
{
require_once 'RequestHeader.php5';
}
/**
 * MapSearchRequest.SearchOption class
 */
if ( !class_exists('MapSearchRequestSearchOption') )
{
require_once 'MapSearchRequest.SearchOption.php5';
}
/**
 * MapSearchFreeRequest class
 */
if ( !class_exists('MapSearchFreeRequest') )
{
require_once 'MapSearchFreeRequest.php5';
}
/**
 * AsyncResponse class
 */
if ( !class_exists('AsyncResponse') )
{
require_once 'AsyncResponse.php5';
}
/**
 * JobStatus class
 */
if ( !class_exists('JobStatus') )
{
require_once 'JobStatus.php5';
}
/**
 * MapSearchQualifiedRequest class
 */
if ( !class_exists('MapSearchQualifiedRequest') )
{
require_once 'MapSearchQualifiedRequest.php5';
}
/**
 * GeocodedAddress.Quality class
 */
if ( !class_exists('GeocodedAddressQuality') )
{
require_once 'GeocodedAddress.Quality.php5';
}
/**
 * GeocodedAddress.Alternative class
 */
if ( !class_exists('GeocodedAddressAlternative') )
{
require_once 'GeocodedAddress.Alternative.php5';
}
/**
 * GeocodedAddress class
 */
if ( !class_exists('GeocodedAddress') )
{
require_once 'GeocodedAddress.php5';
}
/**
 * GeocodeAddressesResponse class
 */
if ( !class_exists('GeocodeAddressesResponse') )
{
require_once 'GeocodeAddressesResponse.php5';
}
/**
 * Address class
 */
if ( !class_exists('Address') )
{
require_once 'Address.php5';
}
/**
 * GeocodeAddressesRequest class
 */
if ( !class_exists('GeocodeAddressesRequest') )
{
require_once 'GeocodeAddressesRequest.php5';
}
/**
 * ReverseGeocodeAddressesRequest class
 */
if ( !class_exists('ReverseGeocodeAddressesRequest') )
{
require_once 'ReverseGeocodeAddressesRequest.php5';
}

/**
 * Map24Geocoder51 class
 * 
 *  
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */
class Map24Geocoder51 {

  private $client;

  private $wsdl = null;

  /**
   *
   * @param MapTP-System the request should be executed on $server
   * @param Map24Id $mid
   * @param Map24SessionId $sid
   */ 
  public function __construct($server=null, $mid=null, $sid=null, $interface='map24/webservices1.5') {
    if($server==null || $mid==null || $sid==null){
      echo "ERROR: Not enough or invalid arguments! Unable to initialise SoapClient.";
    }
    else {
      $this->wsdl = "http://".$server."/".$interface."?wsdl=Map24Geocoder51";
      $this->client = new SoapClient($this->wsdl, array('location' => "http://".$server."/".$interface."?soap=Map24Geocoder51&mid=".$mid."&sid=".$sid, 'trace' => 0, 'exceptions' => 1));
    }
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param MapSearchFreeRequest $MapSearchFreeRequest
   * @return MapSearchResponse
   */
  public function searchFree(RequestHeader $RequestHeader, MapSearchFreeRequest $MapSearchFreeRequest) {
    return $this->client->searchFree($RequestHeader, $MapSearchFreeRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param MapSearchFreeRequest $MapSearchFreeRequest
   * @return AsyncResponse
   */
  public function _async_searchFree(RequestHeader $RequestHeader, MapSearchFreeRequest $MapSearchFreeRequest) {
    return $this->client->_async_searchFree($RequestHeader, $MapSearchFreeRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_status(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_status($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return JobStatus
   */
  public function _async_job_abort(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_abort($AsyncResponse);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return MapSearchResponse
   */
  public function _async_job_retrieve_searchFree(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_searchFree($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param MapSearchQualifiedRequest $MapSearchQualifiedRequest
   * @return MapSearchResponse
   */
  public function searchQualified(RequestHeader $RequestHeader, MapSearchQualifiedRequest $MapSearchQualifiedRequest) {
    return $this->client->searchQualified($RequestHeader, $MapSearchQualifiedRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param MapSearchQualifiedRequest $MapSearchQualifiedRequest
   * @return AsyncResponse
   */
  public function _async_searchQualified(RequestHeader $RequestHeader, MapSearchQualifiedRequest $MapSearchQualifiedRequest) {
    return $this->client->_async_searchQualified($RequestHeader, $MapSearchQualifiedRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return MapSearchResponse
   */
  public function _async_job_retrieve_searchQualified(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_searchQualified($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param GeocodeAddressesRequest $GeocodeAddressesRequest
   * @return GeocodeAddressesResponse
   */
  public function geocodeAddresses(RequestHeader $RequestHeader, GeocodeAddressesRequest $GeocodeAddressesRequest) {
    return $this->client->geocodeAddresses($RequestHeader, $GeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param GeocodeAddressesRequest $GeocodeAddressesRequest
   * @return AsyncResponse
   */
  public function _async_geocodeAddresses(RequestHeader $RequestHeader, GeocodeAddressesRequest $GeocodeAddressesRequest) {
    return $this->client->_async_geocodeAddresses($RequestHeader, $GeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return GeocodeAddressesResponse
   */
  public function _async_job_retrieve_geocodeAddresses(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_geocodeAddresses($AsyncResponse);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest
   * @return GeocodeAddressesResponse
   */
  public function reverseGeocodeAddresses(RequestHeader $RequestHeader, ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest) {
    return $this->client->reverseGeocodeAddresses($RequestHeader, $ReverseGeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param RequestHeader $RequestHeader
   * @param ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest
   * @return AsyncResponse
   */
  public function _async_reverseGeocodeAddresses(RequestHeader $RequestHeader, ReverseGeocodeAddressesRequest $ReverseGeocodeAddressesRequest) {
    return $this->client->_async_reverseGeocodeAddresses($RequestHeader, $ReverseGeocodeAddressesRequest);
  }

  /**
   *  
   *
   * @param AsyncResponse $AsyncResponse
   * @return GeocodeAddressesResponse
   */
  public function _async_job_retrieve_reverseGeocodeAddresses(AsyncResponse $AsyncResponse) {
    return $this->client->_async_job_retrieve_reverseGeocodeAddresses($AsyncResponse);
  }

}

?>
